//
//  NavigationProtocol.h
//  YiCuiMiaoZhang
//
//  Created by Sings on 2019/4/1.
//  Copyright © 2018 益萃网络科技（中国）有限公司. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN
@class BaseControllerViewModel;
@class MultiControllersViewModel;

typedef enum : NSUInteger {
    NavigationPopQueryTypeFirst = 0, // 查询第一个
    NavigationPopQueryTypeLast,      // 查询最后一个
} NavigationPopQueryType;

@protocol NavigationProtocol <NSObject>

- (void)pushViewModel:(BaseControllerViewModel *)viewModel animated:(BOOL)animated;

- (void)pushMultiViewsWithModel:(MultiControllersViewModel *)viewModel animated:(BOOL)animated;

- (void)popViewModelAnimated:(BOOL)animated;

- (void)popToRootViewModelAnimated:(BOOL)animated;

- (void)popToViewModel:(BaseControllerViewModel *)viewMdoel
          ForQueryType:(NavigationPopQueryType)queryType
              Animated:(BOOL)animated
               Failure:(void (^)(void))failure;

- (void)presentViewModel:(BaseControllerViewModel *)viewModel
                animated:(BOOL)animated
              completion:(nullable void (^)(void))completion;

- (void)dismissViewModelAnimated:(BOOL)animated completion:(void (^)(void))completion;

- (void)resetRootViewModel:(BaseControllerViewModel *)viewModel;

- (void) presentiOSActivityControllerWihtActivityItems:(NSArray *) items AndPadctivityView:(UIView *) vPadActivity;

- (void)presentViewModelWithPushAnimation:(BaseControllerViewModel *)viewModel
                                 animated:(BOOL)animated
                               completion:(void (^)(void))completion;

@end

NS_ASSUME_NONNULL_END
